package dayPractice;

import java.util.Arrays;
import java.util.Scanner;

/**
 * 伊娃喜欢从整个宇宙中收集硬币。
 * <p>
 * 有一天，她去了一家宇宙购物中心购物，结账时可以使用各种硬币付款。
 * <p>
 * 但是，有一个特殊的付款要求：每张帐单，她只能使用恰好两个硬币来准确的支付消费金额。
 * <p>
 * 给定她拥有的所有硬币的面额，请你帮她确定对于给定的金额，她是否可以找到两个硬币来支付。
 * <p>
 * 输入格式
 * 第一行包含两个整数 N 和 M，分别表示硬币数量以及需要支付的金额。
 * <p>
 * 第二行包含 N 个整数，表示每个硬币的面额。
 * <p>
 * 输出格式
 * 输出一行，包含两个整数 V1,V2，表示所选的两个硬币的面额，使得 V1≤V2 并且 V1+V2=M。
 * <p>
 * 如果答案不唯一，则输出 V1 最小的解。
 * <p>
 * 如果无解，则输出 No Solution。
 *
 * @author Summerday
 */
public class Main1532双指针 {

    static int n, m;
    static int[] nums;

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        n = sc.nextInt();
        m = sc.nextInt();
        nums = new int[n];
        for (int i = 0; i < n; i++) nums[i] = sc.nextInt();
        Arrays.sort(nums);
        int l = 0, r = n - 1;
        while (l < r && nums[l] + nums[r] != m) {
            int c = nums[l] + nums[r];
            if (c < m) l++;
            else r--;
        }
        if (l == r) System.out.println("No Solution");
        else System.out.println(nums[l] + " " + nums[r]);
    }

}
